Partial Evaluation of Numerical Programs in Fortran
نویسندگان
چکیده
our results using the Fast Fourier Transformation, the N-body attraction problem, and the cubic splines interpolation as examples. We investigate the application of partial evaluation to numerically oriented computation in scientific and engineering applications. We present our results using the Fast Fourier Transformation, the N-body attraction problem, and the cubic splines interpolation as examples. All programs are written in Fortran 77, specialized using our Fortran partial evaluator, and compiled into executable machine code using a commercial Fortran compiler. The results demonstrate that existing partial evaluation technology is strong enough to improve the efficiency of a large class of numerical programs. However, using partial evaluation as a development tool in the ‘real world’ still remains a challenging problem. Our work differs from most previous works in that we apply partial evaluation in a more realistic setting. We use Fortran that, after all, is the most widely used language for scientific and engineering applications [11], a commercial Fortran compiler, and the source code for the Fast Fourier Transformation was taken from a Fortran compiler benchmark. Furthermore, we implemented a partial evaluator for a subset of Fortran that is based on current partial evaluation technology [16]. This extends previous works on partial evaluation of imperative languages and of numerical computations. Why Fortran? We chose this imperative language for several reasons. There is still a large gap between the state-ofthe-art of current research in partial evaluation and its potential significance. Due to the widespread use of Fortran over a period of more than 30 years, a vast body of expertise is available in the form of standard libraries representing an enormous amount of human effort and investment. It is unlikely that existing applications and libraries will be ported to other languages in order to take full advantage of partial evaluation.
منابع مشابه
Partial Evaluation and Symbolic Computation for the Understanding of Fortran Programs
We describe a technique and a tool supporting partial evaluation of Fortran programs, i.e. their specialization for specific values of their input variables. We aim at understanding old programs, which have become very complex due to numerous extensions. From a given Fortran program and these values of its input variables, the tool provides a simplified program, which behaves like the initial o...
متن کاملAutomatic Loop Calculations with FeynArts, FormCalc, and LoopTools
This article describes three Mathematica packages for the automatic calculation of one-loop Feynman diagrams: the diagrams are generated with FeynArts, algebraically simplified with FormCalc, and finally evaluated numerically using the LoopTools package. The calculations are performed analytically as far as possible, with results given in a form well suited for numerical evaluation. The latter ...
متن کاملAn approach for the understanding of scientific application programs based on program specialization
This paper reports on an approach for improving the understanding of old programs which have become very complex due to numerous extensions. We have adapted partial evaluation techniques for program understanding. These techniques mainly use propagation through statements and simplifications of statements. We focus here on the automatic interprocedural analysis and we specify both tasks for cal...
متن کاملAutomatic Parallelization by Pattern-Matching
We present the top{down design of a new system which performs automatic parallelization of numerical Fortran 77 or C source programs for execution on distributed{memory message { passing multi-processors such as e.g. the INTEL iPSC860 or the TMC CM{5. The key idea is a high{level pattern{matching approach which in some useful way permits partial restructuring of a wide class of numerical progra...
متن کاملObject-oriented Field Recovery and Error Estimation in Finite Element Methods
In this chapter we study an object-oriented implementation of procedures for eld recovery and recovery-based error estimation. The eld recovery is based on the superconvergent patch recovery technique by Zienkiewicz and Zhu. The core of the current implementation is problem independent, and is organized as a set of C++ classes based on the software library Diipack. The use of the developed prog...
متن کامل